package com.ljd.music.controller;

import com.alibaba.fastjson.JSONObject;
import com.ljd.music.dao.ListSongMapper;
import com.ljd.music.pojo.ListSong;
import com.ljd.music.pojo.Song;
import com.ljd.music.service.ListSongService;
import com.ljd.music.service.SongService;
import com.ljd.music.util.Consts;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;

@RestController
@RequestMapping("/listSong")
public class ListSongController {

    @Autowired
    private ListSongService listSongService;
    @Autowired
    private SongService songService;

    @GetMapping("allSong")
    public Object allSong(Integer songListId) {
        System.out.println(songListId);
        return listSongService.selectAll(songListId);
    }

    @PostMapping("addSong")
    public Object addSong (Song song, @RequestParam("file") MultipartFile multipartFile,Integer songListId) {
        JSONObject jsonObject = new JSONObject();


        // 歌曲图片设置为默认的图片地址
        song.setPic("/images/songPic/歌曲默认图标.jpg");

        // 判断上传的歌曲文件是否为空
        if (multipartFile.isEmpty()) {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "歌曲文件不存在");
            return jsonObject;
        }

        // 歌曲文件名
        String fileName = System.currentTimeMillis() + multipartFile.getOriginalFilename();
        // 歌曲文件夹路径
        String filePath = System.getProperty("user.dir") + System.getProperty("file.separator") + "song";
        File file = new File(filePath);
        // 是否存在
        if (!file.exists()) {
            file.mkdirs();
        }


        // 歌曲文件地址
        File dest = new File(filePath + System.getProperty("file.separator") + fileName);
        // 数据库存入的地址
        String storePath = "/song/" + fileName;
        try {
            // 文件上传
            multipartFile.transferTo(dest);
            // 将数据库地址存入到实体类中
            song.setUrl(storePath);
            // 添加数据
            boolean insert = songService.insert(song);
            if (insert) {
                ListSong listSong = new ListSong();
                listSong.setSongId(song.getId());
                listSong.setSongListId(songListId);
                boolean insert1 = listSongService.insert(listSong);
                if(insert1) {
                    jsonObject.put(Consts.CODE, 1);
                    jsonObject.put(Consts.MSG, "添加歌曲成功");
                    jsonObject.put("avator", storePath);
                }else {
                    jsonObject.put(Consts.CODE, 0);
                    jsonObject.put(Consts.MSG, "添加歌曲失败");
                }
            } else {
                jsonObject.put(Consts.CODE, 0);
                jsonObject.put(Consts.MSG, "添加歌曲失败");
            }
            return jsonObject;
        } catch (IOException e) {
            jsonObject.put(Consts.CODE, 0);
            jsonObject.put(Consts.MSG, "上传歌曲文件失败");
            return jsonObject;
        } finally {
            return jsonObject;
        }

    }
}
